#ifndef _SEM_HPP_
#define _SEM_HPP_

#include <iostream>
#include <semaphore.h>

class Sem
{
public:
    Sem(int value)
    {
        sem_init(&_sem, 0, value);
    }

    //value=0 wait; value>0 value--
    void p() 
    {
        sem_wait(&_sem);
    }

    //发布信号量 唤醒等待中的线程 资源使用完毕 可以归还资源 将信号量值加1
    void v()
    {
        sem_post(&_sem);
    }
    
    ~Sem()
    {
        sem_destroy(&_sem);
    }

private:
    sem_t _sem;
};

#endif